package com.cskaoyan.javase.oop2.polymorphic10.advantage3;

/**
 * @description: 多态的优缺点
 * @author: wuguidong@cskaoyan.onaliyun.com
 **/

/**
 * > 引例
 * - 科学家要收集动物的叫声去研究
 * - 定义猫，狗实际动物类，它们都会叫
 * - 定义收集猫、狗叫声的方法
 * - 要收集猪的声音，怎么办呢
 *
 */
public class Demo {
    public static void main(String[] args) {
        //创建狗的对象
        Dog dog = new Dog();
        dogShout(dog);
        //创建猫的对象
        Cat cat = new Cat();
        catShout(cat);
    }

    //写方法研究动物叫声
    public static void dogShout(Dog dog) {
        //抓一条狗过来
        //让他叫
        dog.shout();
        //然后收集研究
    }

    public static void catShout(Cat cat) {
        //抓一条猫过来
        //让他叫
        cat.shout();
        //然后收集研究
    }
    //按照以往的写法 再写一个方法 太麻烦
    //需要改进
}

class Animal {
    public void shout() {
        System.out.println("动物叫！");
    }
}

class Cat extends Animal {
    @Override
    public void shout() {
        System.out.println("猫叫");
    }
}

class Dog extends Animal {
    @Override
    public void shout() {
        System.out.println("狗叫");
    }
}

class Pig extends Animal {
    @Override
    public void shout() {
        System.out.println("猪叫");
    }
}
